// function ajax({ method = "get", url, data = {}, success=function(){}, error=function(){}, headers="" }) {
//     console.log(method, url, data);
// }

function ajax(option) {

    var _default = {
        method: "get",
        url: "",
        headers: {
            "Content-Type": "application/x-www-form-urlencoded"
        },
        data: {},
        success: function () { },
        error: function () { }
    };
    // 合并数据
    // _default = { ..._default, ...option };

    // Object.assign 合并对象
    Object.assign(_default, option); // _default

    // 将data对象转为字符串  a=b&c=d 形式
    /*
    // 尽量避免大量的字符串拼接（会对程序的性能造成影响）
    var str = "";
    for (var key in _default.data) {
        str += key + "=" + _default.data[key] + "&";
    }
    str = str.substring(0, str.length - 1);
    console.log(str);
    */
    var arr = [];
    for (var key in _default.data) {
        arr.push(key + "=" + _default.data[key]);
    }
    var str = arr.join("&");
    // console.log(str);

    var xhr = new XMLHttpRequest();

    if (_default.method.toLowerCase() === "get") {  // get  GET   Get     GET   GET  GET
        // open
        xhr.open(_default.method.toLowerCase(), str ? _default.url + "?" + str : _default.url);
        xhr.send();

    } else if (_default.method.toLowerCase() === "post") {
        xhr.open(_default.method.toLowerCase(), _default.url);

        xhr.setRequestHeader("Content-Type", _default.headers["Content-Type"]);

        if (_default.headers["Content-Type"] === "application/x-www-form-urlencoded") {
            xhr.send(str);
        } else {
            xhr.send(JSON.stringify(_default.data));
        }

    }
    xhr.onload = function () {
        if (String(xhr.status).startsWith("4") || String(xhr.status).startsWith("5")) {
            _default.error("请求出现错误");
            return;
        }
        var res = xhr.responseText;
        if (xhr.getResponseHeader("Content-Type").includes("application/json")) {
            _default.success(JSON.parse(res));
        } else {
            _default.success(res);
        }
    }
    xhr.onerror = function () {
        _default.error("请求出现错误");
    }

}

